//package com.zyc.demo.rabbitmq.config;
//
//import org.springframework.amqp.core.Binding;
//import org.springframework.amqp.core.BindingBuilder;
//import org.springframework.amqp.core.Queue;
//import org.springframework.amqp.core.TopicExchange;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//
//@Configuration
//public class TopicConfig {
//
//    /**
//     * 交换机与 queue 进行绑定的 routingKey
//     * routingKey可以重复
//     */
//    public static final String routingKeyA = "topic.message.test";
//    public static final String routingKeyB = "#.message.#";
//    public static final String routingKeyC = "topic.*.test";
//
//
//    /**
//     * 定义名为 queue_topic_messages_a 的队列
//     *
//     * @return
//     */
//    @Bean(name = ConstantVar.queue_topic_messages_a)
//    public Queue queueTopicMessagesA() {
//        Queue queue = new Queue(ConstantVar.queue_topic_messages_a, true, false, false, null);
//        return queue;
//    }
//
//    /**
//     * 定义名为 queue_topic_messages_b 的队列
//     *
//     * @return
//     */
//    @Bean(name = ConstantVar.queue_topic_messages_b)
//    public Queue queueTopicMessagesB() {
//        Queue queue = new Queue(ConstantVar.queue_topic_messages_b, true, false, false, null);
//        return queue;
//    }
//
//    /**
//     * 定义名为 queue_topic_messages_c 的队列
//     *
//     * @return
//     */
//    @Bean(name = ConstantVar.queue_topic_messages_c)
//    public Queue queueTopicMessagesC() {
//        Queue queue = new Queue(ConstantVar.queue_topic_messages_c, true, false, false, null);
//        return queue;
//    }
//
//    /**
//     * 声明一个 topicExchange 交换机
//     *
//     * @return
//     */
//    @Bean
//    public TopicExchange topicExchange() {
//        String topicExchangeName = ConstantVar.topicExchangeName;
//        TopicExchange topicExchange = new TopicExchange(topicExchangeName, true, false, null);
//        return topicExchange;
//    }
//
//
//    /**
//     * 将队列 queue_topic_messages_a 和交换机 topicExchange 进行绑定
//     *
//     * @return
//     */
//    @Bean
//    public Binding bindingQueueAToFanoutExchangeA() {
//
//        Binding binding = BindingBuilder
//                .bind(queueTopicMessagesA())
//                .to(topicExchange())
//                .with(routingKeyA);
//        return binding;
//    }
//
//    /**
//     * 将队列 queue_topic_messages_b 和交换机 topicExchange 进行绑定
//     *
//     * @return
//     */
//    @Bean
//    public Binding bindingQueueAToFanoutExchangeB() {
//        /**
//         *  routingKey  以 . 分割
//         *  #    通配符，表示一个或者多个
//         *  *    通配符，匹配一个
//         */
//
//        Binding binding = BindingBuilder
//                .bind(queueTopicMessagesB())
//                .to(topicExchange())
//                .with(routingKeyB);
//        return binding;
//    }
//
//    @Bean
//    public Binding bindingQueueAToFanoutExchangeC() {
//        /**
//         *  routingKey  以 . 分割
//         *  #    通配符，表示一个或者多个
//         *  *    通配符，匹配一个
//         */
//
//        Binding binding = BindingBuilder
//                .bind(queueTopicMessagesC())
//                .to(topicExchange())
//                .with(routingKeyC);
//        return binding;
//    }
//}
